Increase Software Product Reusability and Variability using Active Components A Software Product Line Infrastructure
نویسنده
چکیده
Software Product Lines (SPL) are typically used to support development of a software product family and not a software product population, which denotes a broader and more diverse range of software products. A Software Product Line Infrastructure (SPLI) has been designed that supports the development of software product populations. The SPLI takes a bottom-up approach by structuring product features in highly reusable software components called Active Components. This is in contrast with architecture-centric software product lines that have a more top-down approach in which all variability is expressed in a single architecture. A Model-Driven Engineering (MDE) approach is used in which product design and variability is specified in domain-specific models. The domain-specific models are used as input for transformations that are executed during product construction to achieve variability within components. The second focus of the SPLI is on increasing the reuse of software product design by enabling step-wise refinements of software products. Software product design is primarily captured in domain-specific models and by allowing specialization, i.e. refinement, of these models, it becomes possible to develop reusable models that capture common design. This allows for step-wise refinements of product design and increases software reuse. The research conducted in this thesis was driven by a business case that required the support for a broad range of software products and reuse of software product design. The research involved an extensive literature review and resulted in the design of the SPLI that has been validated by 1) a proof of concept prototype in the form of a Visual Studio 2010 extension, 2) an experimental software product line developed on the prototype and 3) a questionnaire among five experts at the company that drove this research. The results of these validations are positive towards the feasibility and utility of the SPLI. It is concluded that within the context of our experimental software product line that the SPLI supports the goals of supporting the development of diverse software products and enabling step-wise refinements of software products. Further research is required to validate whether the SPLI scales well with larger product populations. Preface On my first encounter with software product lines I was a bit skeptical about this application generator idea, to say the least. Being a programmer myself, I knew how hard software development can be. Surely, this could not be automated. But provoked by the thought I investigated more time in the manner. This brought me back to the fundamentals of software development. What does it mean to be programming? What is design and when does it become implementation? I came to think of interdependencies between abstraction levels and software construction as a long chain of transformations. The potential reuse of software efforts. Or not. I also came to realize that software development is design and design means creativity. Surely, we can automate many aspects of software development, the code plumbing, but all that is repeatable is not creative and distinctive. What I have been trying to achieve with this research is not to constrain developers to a mechanical structure. Rather, the aim was to take reusability to another level to achieve the opposite: free up development time to do exactly that what we, the software developers, love the most: inventing and designing new stuff. Although software product lines can on the surface appear as a very mechanical approach to software development, it is in my opinion also an instrument to free the developer from the repeating and boring stuff. Automation can indeed be seen as a liberation of the software developer. I have taken my first steps in this research field. I hope to expand my knowledge on the subject and to get an ever increasing understanding of software development and to be able to put this to use in delivering valuable software that users love. I would like to thank my supervisor Marc Remmer for his guidance during my internship at Businessbase and 42Windmills. He gave me invaluable insight in both the development issues as well as the business challenges at a typical ISV. My development colleagues at Businessbase Sander Weerdenburg and Fabian Kemper for providing me insight in their work and to have a laugh. My supervisors from Utrecht University Slinger Jansen and Sjaak Brinkkemper for their assistance in doing academic research and their persistence in getting all the details right. And my girlfriend, friends and family for their loving support during a hectic year in my life. Thanks.
منابع مشابه
Systems Variability Modeling: A Textual Model Mixing Class and Feature Concepts
System’s reusability and cost are very important in software product line design area. Developers’ goal is to increase system reusability and decreasing cost and efforts for building components from scratch for each software configuration. This can be reached by developing software product line (SPL). To handle SPL engineering process, several approaches with several techniques were developed. ...
متن کاملMAAPL: Managed Adaptive Automotive Product Line Development
More than a decade ago, the term automotive software engineering was officially introduced in the software community addressing research challenges and technical issues encountering software development in the automotive domain. Today automotive manufacturers and suppliers design and implement complex applications by mechanisms that allow them to implement such functionality on integrated platf...
متن کاملUsing Coordinated Actors to Model Families of Distributed Systems
Software product line engineering enables strategic reuse in development of families of related products. In a component-based approach to product line development, components capture functionalities appearing in one or more products in the family and different assemblies of components yield to various products or configurations. In this approach, an interaction model which effectively factors ...
متن کاملThe Hyper/UML Approach for Feature Based Software Design
The market requests complex but adaptable software systems. There are different concepts to meet this demand, for example software reusability, component-based development, agile processes, generative programming and domain analysis. For similar products within a domain product lines are a very promising approach for shortening development time and cost and for improving quality. Software produ...
متن کاملXVCL: a mechanism for handling variants in software product lines
Software reuse focused on product lines has emerged as one of the promising ways to increase software productivity and quality. XVCL (XML-based Variant Configuration Language) is a variability mechanism we developed for handling variants in software product lines. We apply XVCL to develop product line assets (including domain model, product line architecture and generic components) as a set of ...
متن کامل